﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using DTO_MechSys;

namespace DAL_MechSys
{
    public class DALTarefa: DALBase
    {
        public void Excluir(int tarefaID)
        {
            try
            {
                string storedProssidere = "sp_ExcluirTarefa";
                SqlParameter[] parameters =

                        {                    
                           new SqlParameter("@tarefaID", tarefaID)                                    
                        };
                ExecuteNonQuery(storedProssidere, parameters);

            }

            catch (SqlException)
            {
                throw;
            }
        }

        public void Inserir(DTOTarefa dtoTarefa)
        {
            try
            {
                string storedProssidere = "sp_InserirTarefa";
                SqlParameter[] parameters =
                
                { 
                   new SqlParameter("@descricao", dtoTarefa.Descricao),

                };
                ExecuteNonQuery(storedProssidere, parameters);

            }

            catch (SqlException)
            {
                throw;
            }
        }

        public void Atualizar(DTOTarefa dtoTarefa)
        {
            try
            {
                string storedProssidere = "sp_AtualizarTarefa";
                SqlParameter[] parameters =

                {                  
                   new SqlParameter("@tarefaID", dtoTarefa.TarefaID),
                   new SqlParameter("@descricao", dtoTarefa.Descricao)        
                };
                ExecuteNonQuery(storedProssidere, parameters);

            }

            catch (SqlException)
            {
                throw;
            }
        }

        public List<DTOTarefa> BuscarTarefasCadastrados()
        {
            List<DTOTarefa> lstTarefa = new List<DTOTarefa>();

            try
            {
                string storedProssidere = "sp_BuscarTarefasCadastrados";
                using (SqlDataReader sqlDataReader = ExecuteReader(storedProssidere))
                {
                    while (sqlDataReader.Read())
                    {
                        DTOTarefa dtoTarefa = CriarTarefa(sqlDataReader);

                        lstTarefa.Add(dtoTarefa);
                    }
                }
            }
            catch (SqlException)
            {
                throw;
            }
            return lstTarefa;
        }

        public bool VerificaSeTarefaIDExiste(int tarefaID)
        {
            bool Existe = false;

            try
            {
                string storedProssidere = "sp_VerificaSeTarefaIDExiste";

                SqlParameter[] parameters =
            {
                new SqlParameter("@tarefaID", tarefaID),                            
            };

                using (SqlDataReader sqlDataReader = ExecuteReader(storedProssidere, parameters))
                {
                    if (sqlDataReader.Read())
                    {
                        int NumReg = (int)sqlDataReader["NumeroRegistros"];
                        if (NumReg > 0)
                        {
                            Existe = true;
                        }

                    }
                }
                return Existe;

            }
            catch (Exception)
            {
                throw;
            }

        }

        private DTOTarefa CriarTarefa(SqlDataReader sqlDataReader)
        {
            try
            {
                DTOTarefa dtoTarefa = new DTOTarefa();

                if (!string.IsNullOrEmpty(sqlDataReader["TarefaID"].ToString()))
                {
                    dtoTarefa.TarefaID = (int)sqlDataReader["TarefaID"];
                }

                if (!string.IsNullOrEmpty(sqlDataReader["Descricao"].ToString()))
                {
                    dtoTarefa.Descricao = (string)sqlDataReader["Descricao"];
                }
                return dtoTarefa;
            }
            catch (Exception)
            {
                throw;
            }
        }

        public List<DTOTarefa> PesquisarTarefa(string descricao, int codigo)
        {
            List<DTOTarefa> lstTarefa = new List<DTOTarefa>();

            try
            {
                string storedProssidere = "sp_BuscarTarefaPesquisa";

                SqlParameter[] parameters =                
                { 
                   new SqlParameter("@string", descricao),
                   new SqlParameter("@int", codigo)

                };
                using (SqlDataReader sqlDataReader = ExecuteReader(storedProssidere, parameters))
                {
                    while (sqlDataReader.Read())
                    {
                        DTOTarefa dtoProduto = CriarTarefa(sqlDataReader);

                        lstTarefa.Add(dtoProduto);
                    }
                }
            }
            catch (SqlException)
            {
                throw;
            }
            return lstTarefa;
        }

    }
}
